package org.summer.lawyer.constant.enums;

import cn.hutool.core.util.ArrayUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;

/**
 * 转账状态
 */
@Getter
@AllArgsConstructor
public enum PayTransferStatus {

    /**
     * 0初始态。 系统转账校验中
     */
    INIT(0, "转账校验中"),

    /**
     * 1已受理
     * 已受理。批次已受理成功，若发起批量转账的30分钟后，转账批次单仍处于该状态，可能原因是商户账户余额不足等。商户可查询账户资金流水，若该笔转账批次单的扣款已经发生，则表示批次已经进入转账中，请再次查单确认
     */
    ACCEPTED(1,"已受理"),

    /**
     * 2待确认
     * 待商户确认, 符合免密条件时, 系统会自动扭转为转账中
     */
    WAIT_PAY(2, "待确认"),

    /**
     * 3转账中
     * 已开始处理批次内的转账明细单
     */
    PROCESSING(3,"转账中"),

    /**
     * 4转账成功
     * 批次内的所有转账明细单都已处理完成
     */
    SUCCESS(4, "转账成功"),
    /**
     * 5转账失败
     * 可查询具体的批次关闭原因确认
     */
    FAIL(5, "转账失败");



    public static PayTransferStatus getByCode(Integer code) {
        return ArrayUtil.firstMatch(item -> Objects.equals(item.getCode(), code), values());
    }

    private final  Integer code;

    private final String info;
}
